#include "gaia_common.h"
#include "gaia_db.h"

/***************************************************
 * 函数名：gaia_write_task_status_frist
 * 用途：收到请求后，首次写入的状态值(0)，以及其他
 *       的数据，如关联这次任务的hostid、任务类型
 *       task_type、任务开始时的时间戳
 * 参数说明：task_id      任务id
 *           task_type    任务类型
 *           hostid       主机id
 *           start_time   开始时间戳
 *           status       任务进度
 ****************************************************/
int gaia_write_task_status_frist(int task_id,char *task_type,int hostid,
                                 unsigned int start_time,int status)
{
  char *tmp_sql = "insert into gaia_process_status(task_id,task_type,hostid,start_time,end_time,status) \
                   values(%d,'%s',%d,%d,%d,%d)";

  char sql[256];
  sprintf(sql,tmp_sql,task_id,task_type,hostid,start_time,start_time,status);
  printf("%s\n",sql);

  gaia_DBinsert(sql);
  
  return 0;
}

/****************************************************
 * 函数名：gaia_update_task_status
 * 用途：更新task完成进度，用于任务进行时调用
 * 返回值：0
 * 参数说明：task_id  任务id
 *           status   状态值(0 < 100)
 ****************************************************/
int gaia_update_task_status(int task_id,int status)
{
  //获取时间
  int endtime = 0;
  gaia_get_unixtime(&endtime); 
  printf("endtime = %d\n",endtime);
  
  //更新状态
  char sql[256];
  char *tmp_sql = "update gaia_process_status set end_time=%d,status=%d where task_id=%d ";
  sprintf(sql,tmp_sql,endtime,status,task_id);
  gaia_DBupdate(sql);
  return 0;
}

/******************************************************
 * 函数名：gaia_task_status
 * 用途：查询任务完成进度
 * 返回值：0
 * 参数说明：connect_fd 已建立连接的sock句柄
 *           task_id  任务id
 ******************************************************/
int gaia_task_status(int *connect_fd,int task_id)
{
  int status = 0;
  printf("task_id = %d\n",task_id);
  //获取status的状态值
  gaia_DBselect_task_status(task_id,&status);  
  //返回状态值
  gaia_reply_info(connect_fd,task_id,status,"status query");
  
  return 0;
}
